#!/bin/bash
# 脚本名称：create_temporary_users.sh
# 说明：
#   - 创建一组临时用户，并设置账户到期时间
#   - 到期后用户将无法登录，且账户可以手动删除
#   - 适用于 Linux 系统（不检查 root 权限，但部分命令需要 sudo）

set -euo pipefail

# 默认参数
USER_PREFIX="tempuser"  # 用户名前缀
USER_COUNT=5            # 创建用户数量
EXPIRY_DAYS=7           # 账户到期天数
BASE_UID=3000           # 用户 UID 起始编号
GROUP_NAME="tempusers"  # 临时用户组

# 创建用户组（如果不存在）
if ! getent group "$GROUP_NAME" >/dev/null; then
    echo "🔹 创建用户组：$GROUP_NAME"
    sudo groupadd "$GROUP_NAME"
fi

# 创建用户
for ((i = 1; i <= USER_COUNT; i++)); do
    USERNAME="${USER_PREFIX}${i}"
    USER_UID=$((BASE_UID + i))

    if id "$USERNAME" &>/dev/null; then
        echo "⚠️ 用户 $USERNAME 已存在，跳过创建。"
        continue
    fi

    echo "✅ 创建用户：$USERNAME (UID: $USER_UID)"
    sudo useradd -m -u "$USER_UID" -g "$GROUP_NAME" -s /bin/bash -e "$(date -d "+$EXPIRY_DAYS days" +%F)" "$USERNAME"

    # 设置随机密码并输出
    PASSWORD=$(openssl rand -base64 12)
    echo "$USERNAME:$PASSWORD" | sudo chpasswd
    echo "🔑 用户 $USERNAME 的密码：$PASSWORD"
done

echo "🎉 所有临时用户创建完成，有效期 $EXPIRY_DAYS 天！"

# 提示如何删除到期账户
echo -e "\n⏳ 到期用户删除方式（手动执行）："
echo "  sudo find /home -maxdepth 1 -type d -name '${USER_PREFIX}*' -exec rm -rf {} +"
echo "  for user in \$(awk -F: '/^${USER_PREFIX}/ {print \$1}' /etc/passwd); do sudo userdel -r \$user; done"

exit 0

